home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 2002 November / SGI IRIX Installation Tools & Overlays 2002 November - Disc 4.iso / dist / motif21_dev.idb / usr / Motif-2.1 / include / Xm / CascadeBGP.h.z / CascadeBGP.h
C/C++ Source or Header  |  2002-10-15  |  9KB  |  253 lines

  1. /* 
  2.  *  @OSF_COPYRIGHT@
  3.  *  COPYRIGHT NOTICE
  4.  *  Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
  5.  *  ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
  6.  *  the full copyright text.
  7. */ 
  8. /* 
  9.  * HISTORY
  10. */ 
  11. /* $XConsortium: CascadeBGP.h /main/13 1996/03/25 14:52:33 pascale $ */
  12. /* (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  13. /* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  14. #ifndef  _XmCascadeBGP_h
  15. #define  _XmCascadeBGP_h
  16.  
  17. #include <Xm/CascadeBG.h>
  18. #include <Xm/LabelGP.h>
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. /*********************************************************************
  25.  * The Arrow Cache record for the menu cascade button
  26.  *********************************************************************/
  27. typedef struct _XmArrowPixmap
  28. {
  29.    Dimension height, width;
  30.    unsigned int depth;
  31.    unsigned char direction;
  32.    Pixel top_shadow_color;
  33.    Pixel bottom_shadow_color;
  34.    Pixel foreground_color;
  35.    Display *display;
  36.    Screen *screen;
  37.    Pixmap pixmap;
  38. } XmArrowPixmap;
  39.  
  40.  
  41. /*********************************************************************/
  42. /* The CascadeButton Gadget Cache Object's class and instance records*/
  43. /*********************************************************************/
  44.  
  45.  
  46. typedef struct _XmCascadeButtonGCacheObjClassPart
  47. {
  48.   int foo;
  49.   
  50. #ifdef _SGIMOTIF
  51.   XtPointer _SG_vendorExtension;
  52. #endif
  53.  
  54. } XmCascadeButtonGCacheObjClassPart;
  55.  
  56.  
  57. typedef struct _XmCascadeButtonGCacheObjClassRec
  58. {
  59.   ObjectClassPart                     object_class;
  60.   XmExtClassPart                      ext_class;
  61.   XmLabelGCacheObjClassPart           label_class_cache;
  62.   XmCascadeButtonGCacheObjClassPart   cascade_button_class_cache;
  63. } XmCascadeButtonGCacheObjClassRec;
  64.  
  65. externalref XmCascadeButtonGCacheObjClassRec xmCascadeButtonGCacheObjClassRec;
  66.  
  67.  
  68. typedef struct _XmCascadeButtonGCacheObjPart
  69. {
  70.   Pixmap              cascade_pixmap;         /* pixmap for the cascade */
  71.   int                 map_delay;              /* time delay for posting */
  72.   Pixmap          armed_pixmap;
  73.  
  74. #ifdef _SGIMOTIF
  75.     XtPointer    _SG_vendorExtension;
  76. #endif
  77.     
  78.   GC                  arm_gc;
  79.   GC                  background_gc;
  80. } XmCascadeButtonGCacheObjPart;
  81.  
  82. typedef struct _XmCascadeButtonGCacheObjRec
  83. {
  84.   ObjectPart                   object;
  85.   XmExtPart                    ext;
  86.   XmLabelGCacheObjPart         label_cache;
  87.   XmCascadeButtonGCacheObjPart cascade_button_cache;
  88. } XmCascadeButtonGCacheObjRec;
  89.  
  90. /* The CascadeButtonGadget instance record */
  91.  
  92. typedef    struct _XmCascadeButtonGadgetPart
  93. {            /* resources */
  94.   Widget        submenu;        /* the menu to pull down */
  95.   XtCallbackList    activate_callback;    /* widget fired callback */
  96.   XtCallbackList    cascade_callback;    /* optional callback, called */
  97.                         /* when the menu is about */
  98.                         /* to be pulled down */
  99.             /* internal fields */
  100.   Boolean        armed;            /* armed flag */
  101.   XRectangle        cascade_rect;        /* location of cascade*/
  102.   XtIntervalId        timer;            /* timeout id */
  103.   XmCascadeButtonGCacheObjPart         *cache;
  104.   
  105. #ifdef _SGIMOTIF
  106.   XtPointer        _SG_vendorExtension;
  107. #endif
  108.  
  109. } XmCascadeButtonGadgetPart;
  110.  
  111.  
  112. /* Full instance record declaration */
  113.  
  114. typedef struct _XmCascadeButtonGadgetRec
  115. {
  116.   ObjectPart             object;
  117.   RectObjPart                rectangle;
  118.   XmGadgetPart               gadget;
  119.   XmLabelGadgetPart          label;
  120.   XmCascadeButtonGadgetPart  cascade_button;
  121. } XmCascadeButtonGadgetRec;
  122.  
  123. #ifdef _SGIMOTIF
  124. typedef struct __SG_XmCascadeBGClassExtPArt
  125. {
  126.   visual_state_array cascade_state_array;
  127. }_SG_XmCascadeBGClassExtPart;
  128.  
  129. typedef struct __SG_XmCascadeBGClassExt
  130. {
  131.   _SgClassExtensionRec common;
  132.   _SG_XmCascadeBGClassExtPart cascadebg;
  133. }_SG_XmCascadeBGClassExtRec, *_SG_XmCascadeBGClassExt;
  134. #endif /* _SGIMOTIF */
  135.  
  136. /* CascadeButton class structure */
  137.  
  138. typedef struct 
  139. {
  140.   XtPointer    extension;    /* Pointer to extension record */
  141.  
  142. #ifdef _SGIMOTIF
  143.     _SgClassExtension    _SG_vendorExtension;
  144. #endif
  145. } XmCascadeButtonGadgetClassPart;
  146.  
  147.  
  148. /* Full class record declaration for CascadeButton class */
  149.  
  150. typedef struct _XmCascadeButtonGadgetClassRec 
  151. {
  152.   RectObjClassPart               rect_class;
  153.   XmGadgetClassPart              gadget_class;
  154.   XmLabelGadgetClassPart         label_class;
  155.   XmCascadeButtonGadgetClassPart cascade_button_class;
  156. } XmCascadeButtonGadgetClassRec;
  157.  
  158. #ifdef _SGIMOTIF
  159. #define _SG_CascadeBGClassPtr(wc) \
  160. ((_SG_XmCascadeBGClassExt)(((XmCascadeButtonGadgetClassRec*)(wc))->cascade_button_class._SG_vendorExtension))
  161. #endif
  162.  
  163. externalref XmCascadeButtonGadgetClassRec   xmCascadeButtonGadgetClassRec;
  164.  
  165.  
  166. /* Access macro definitions  for UNcached fields*/
  167.  
  168. #define CBG_Submenu(cb)        (((XmCascadeButtonGadget)             \
  169.                                   cb)->cascade_button.submenu)
  170. #define CBG_ActivateCall(cb)    (((XmCascadeButtonGadget)                    \
  171.                                   cb)->cascade_button.activate_callback)
  172. #define CBG_CascadeCall(cb)    (((XmCascadeButtonGadget)                    \
  173.                                   cb)->cascade_button.cascade_callback)
  174. #define CBG_Armed(cb)        (((XmCascadeButtonGadget)                    \
  175.                                   cb)->cascade_button.armed)
  176. #define CBG_CascadeRect(cb)    (((XmCascadeButtonGadget)                    \
  177.                                   cb)->cascade_button.cascade_rect)
  178. #define CBG_Timer(cb)           (((XmCascadeButtonGadget)                    \
  179.                   cb)->cascade_button.timer)
  180. #define CBG_Cascade_x(cb)    (((XmCascadeButtonGadget)                    \
  181.                                   cb)->cascade_button.cascade_rect.x)
  182. #define CBG_Cascade_y(cb)    (((XmCascadeButtonGadget)                    \
  183.                                   cb)->cascade_button.cascade_rect.y)
  184. #define CBG_Cascade_width(cb)    (((XmCascadeButtonGadget)                    \
  185.                                   cb)->cascade_button.cascade_rect.width)
  186. #define CBG_Cascade_height(cb)    (((XmCascadeButtonGadget)                    \
  187.                                   cb)->cascade_button.cascade_rect.height)
  188. #define CBG_HasCascade(cb)      (((LabG_MenuType(cb) == XmMENU_PULLDOWN)  || \
  189.                       (LabG_MenuType(cb) == XmMENU_POPUP) ||     \
  190.                                   (LabG_MenuType(cb) == XmMENU_OPTION)) &&   \
  191.                      (CBG_Submenu(cb)))
  192.  
  193. #define XmCBG_ARMED_BIT           (1 << 0)
  194. #define XmCBG_TRAVERSE_BIT     (1 << 1)
  195. #define XmCBG_WAS_POSTED_BIT   (1 << 2)
  196.  
  197. #define CBG_IsArmed(cb)     (((XmCascadeButtonGadget)(cb))->cascade_button.armed \
  198.               & XmCBG_ARMED_BIT)
  199.  
  200. #define CBG_Traversing(cb) (((XmCascadeButtonGadget)                          \
  201.                 (cb))->cascade_button.armed & XmCBG_TRAVERSE_BIT)
  202.  
  203. #define CBG_WasPosted(cb) (((XmCascadeButtonGadget)                          \
  204.                 (cb))->cascade_button.armed & XmCBG_WAS_POSTED_BIT)
  205.  
  206. #define CBG_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  207.  
  208. #define CBG_SetArmed(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  209.                        (cb))->cascade_button.armed,          \
  210.                       XmCBG_ARMED_BIT, v)
  211.  
  212. #define CBG_SetTraverse(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  213.                        (cb))->cascade_button.armed,          \
  214.                       XmCBG_TRAVERSE_BIT, v)
  215.  
  216. #define CBG_SetWasPosted(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  217.                          (cb))->cascade_button.armed,          \
  218.                         XmCBG_WAS_POSTED_BIT, v)
  219.  
  220.  
  221.                   
  222. /* Access macro definitions  for Cached fields*/
  223.  
  224. #define CBG_CascadePixmap(cb)   (((XmCascadeButtonGadget)                    \
  225.                   cb)->cascade_button.cache->cascade_pixmap)
  226. #define CBG_MapDelay(cb)        (((XmCascadeButtonGadget)                    \
  227.                   cb)->cascade_button.cache->map_delay)
  228. #define CBG_ArmedPixmap(cb)    (((XmCascadeButtonGadget)                    \
  229.                   cb)->cascade_button.cache->armed_pixmap)
  230. #define CBG_ArmGC(cb)            (((XmCascadeButtonGadget)                    \
  231.                                   cb)->cascade_button.cache->arm_gc)
  232. #define CBG_BackgroundGC(cb)     (((XmCascadeButtonGadget)                    \
  233.                                   cb)->cascade_button.cache->background_gc)
  234.  
  235.  
  236. /******************************/
  237. /* Convenience Macros         */
  238. /******************************/
  239.  
  240.  
  241. #define CBG_Cache(w)                    (((XmCascadeButtonGadget)(w))->\
  242.                        cascade_button.cache)
  243. #define CBG_ClassCachePart(w) \
  244.     (((XmCascadeButtonGadgetClass)xmCascadeButtonGadgetClass)->gadget_class.cache_part)
  245.  
  246.  
  247. #ifdef __cplusplus
  248. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  249. #endif
  250.  
  251. #endif  /* _XmCascadeBGP_h */
  252. /* DON'T ADD STUFF AFTER THIS #endif */
  253.